/**
 * ☆☆☆☆☆☆
 *   微信分享 混入 可修改  如果不起效果 查看wx.utils.js 13行修改后端返回的数据
 *   使用例子在views/wxsdk
 *   部署线上实体机才能成功唤醒
 * ☆☆☆☆☆☆☆
 **/
export default {

  methods: {

    /**
     * 微信分享
     * @param info
     */
    wxShare(info) {
      this.$wx.share({
        title: info.title, // 分享标题
        desc: info.desc, // 分享描述
        link: info.link, // 分享链接只跳首页
        imgUrl: info.imgUrl // 分享图标
      })
    },
    /**
     *
     * @param  needResult // 默认为0，扫描结果由微信处理，1则直接返回扫描结果
     * @returns
     */
    wxScanCode(needResult) {
      return new Promise((resolve, reject) => {
        if (!needResult) {
          needResult = 0
        }
        this.$wx.scanQRCode({
          needResult: needResult,
          scanType: ['qrCode', 'barCode'], // 可以指定扫二维码 或条形码 默认二者都有
          success(res) {
            resolve({
              type: true,
              res
            })
          },
          fail(err) {
            console.error(' ---from mixins/wx.js', err)
            resolve({
              type: false,
              err
            })
          }
        })
      })
    },

    /**
     * 订单支付封装
     * @param info 信息
     * @param target //获取订单号，时间的接口
     * @return {Promise} 支付结果
     */
    wxPayOrder(info, target = null) {
      if (target === null) {
        console.error('target必须是API的方法 --- from mixins/wx.js')
        return Promise.reject(new Error('target必须是API的方法'))
      }
      return target(info)
        .then(res => {
          const oid = res.orderInfo
          const time = res.jssdk.timestamp
          // 调取封装的支付 把支付的订单号，时间和支付结果返回，用于跳转订单结果
          return this.wx.pay(res.jssdk).then(r => {
            console.log('支付成功')
            return Promise.resolve({
              oid,
              time,
              type: true
            })
          }).catch(r => {
            console.log('支付失败/取消')
            return Promise.resolve({
              oid,
              time,
              type: false
            })
          })
        }).catch(err => {
          // 请求接口失败
          console.log(err)
          return Promise.reject(err)
        })
    }
  }
}
